package com.cyru.statemachine.core;

import java.util.List;

/**
 * description: 状态
 *
 * @author zhangxuchuan
 * date 2022/5/1
 */
public interface State<S, E, C> extends Element{

    /**
     * 获取状态的唯一标识
     */
    S getId();

    /**
     * 新增一个状态流转
     */
    Transition<S, E, C> addTransition(State<S, E, C> target, E event);

    /**
     * 获取当前状态根据当前事件流转的状态集合
     */
    List<Transition<S, E, C>> getTransitionByEvent(E event);

    /**
     * 获取当前状态全部的转换
     */
    List<Transition<S, E, C>> getAllTransition();

}
